#!/bin/bash

# Go 安装脚本 (Go 1.22.2)
# 包含 GOPROXY 和 GO111MODULE 配置
# 使用方法: sudo ./install_go.sh

# 下载链接
GO_URL="https://dl.google.com/go/go1.22.2.linux-amd64.tar.gz"
GO_TAR="go1.22.2.linux-amd64.tar.gz"
INSTALL_DIR="/usr/local"
PROFILE_FILE="$HOME/.bashrc"

# 检查是否以root运行
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用sudo运行此脚本!"
    exit 1
fi

# 1. 下载Go
echo "正在下载Go 1.22.2..."
if [ ! -f $GO_TAR ]; then
    wget -q $GO_URL -O $GO_TAR
    if [ $? -ne 0 ]; then
        echo "下载失败!"
        exit 1
    fi
else
    echo "发现本地已存在Go安装包，跳过下载..."
fi

# 2. 解压安装
echo "正在安装到${INSTALL_DIR}..."
rm -rf ${INSTALL_DIR}/go  # 清理旧版本
tar -C $INSTALL_DIR -xzf $GO_TAR
rm -f $GO_TAR

# 3. 配置环境变量
echo "配置环境变量..."

# 检查是否已存在Go配置
if grep -q "export PATH=\$PATH:${INSTALL_DIR}/go/bin" $PROFILE_FILE; then
    echo "检测到已有Go配置，将更新配置..."
    # 删除旧的Go配置
    sed -i '/# Go 环境配置/,/export PATH=\$PATH:\$GOPATH\/bin/d' $PROFILE_FILE
fi

# 添加新的Go配置
cat <<EOF >> $PROFILE_FILE

# Go 环境配置
export PATH=\$PATH:${INSTALL_DIR}/go/bin
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOPATH/bin
export GOPROXY='https://goproxy.cn,direct'
export GO111MODULE='on'
EOF

# 4. 创建GOPATH目录
mkdir -p $HOME/go

# 5. 使配置生效
echo "应用环境配置..."
source $PROFILE_FILE

# 6. 验证安装
echo "验证安装..."
go version
if [ $? -ne 0 ]; then
    echo "安装失败!"
    exit 1
fi

# 7. 显示Go环境信息
echo "当前Go配置:"
go env | grep -E "GOROOT|GOPATH|GOPROXY|GO111MODULE"

echo ""
echo "Go 1.22.2 安装完成!"
echo "所有配置已自动生效，无需手动source"